package com.example.xd.javatest.thread_test;

import java.util.concurrent.FutureTask;

/**
 * @auther XuDan on 2020/6/15.
 * 第一：降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
 * 第二：提高响应速度。当任务到达时，任务可以不需要等到线程创建就能立即执行。
 * 第三：提高线程的可管理性。线程是稀缺资源，如果无限制的创建，不仅会消耗系统资源，还会降低系统的稳定性，
 * 使用线程池可以进行统一的分配，调优和监控。
 */
public class Client {
    public static void main(String[] args) {
        ThreadImp threadImp = new ThreadImp();
        threadImp.start();
        try {
            threadImp.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        RunnableImpl runnable = new RunnableImpl();
        new Thread(runnable).start();

        CallableImpl callable = new CallableImpl();
        //Thread只接受Runnable类型的参数,所以需要将Callable封装
        FutureTask<String> stringFutureTask = new FutureTask<String>(callable);
        new Thread(stringFutureTask).start();
        try {
            System.out.println(stringFutureTask.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
